/*************************************************************************
	> File Name: oj-282.cpp
	> Author: Wang Bo
	> Mail: 1276106221@qq.com
	> Created Time: 2021年01月13日 星期三 21时56分35秒
 ************************************************************************/
#include <iostream>
using namespace std;
#define MAX_N 100000
#define BASE 31
struct node {
    node *next[2];
} tree[MAX_N * BASE + 5];

int cnt = 0; //当前用了几个字典树节点

node *getNode() {
    return &tree[cnt++];
}

int n;
int val[MAX_N + 5];

//root 根节点地址; x 待插入数字
void insert(node *root, int x) {
    for (int i = 30; i >= 0; --i) {
        int ind = !!(x & (1 << i));
        if (root->next[ind] == NULL) root->next[ind] = getNode();
        root = root->next[ind];
    }
    return ;
}

int query(node *root, int x) {
    //求和x最大异或和
    int ans = 0;
    for (int i = 30; i >= 0; --i) {
        int ind = !(x & (1 << i));
        if (root->next[ind]) {
            ans |= (1 << i); //贪心策略
            root = root->next[ind];
        } else {
            root = root->next[!ind];
        }
    }
    return ans;
}

int main() {
    cin >> n;
    int ans = 0, a;
    node *root = getNode();
    cin >> a; n--;
    insert(root, a);
    while (n--) {
        cin >> a;
        ans = max(query(root, a), ans);
        insert(root, a);
    }
    cout << ans << endl;
    return 0;
}
